package colin.spring.boot.sample.web.dao;

import java.util.List;

import org.springframework.data.jpa.repository.Query;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;

import colin.spring.boot.sample.web.pojo.UserEntity;

/**
 * 
 * 
 * @ClassName: UserDao
 * @Description: 用户操作类
 * @author linqiang
 * @date ：2015年9月29日 下午4:59:00
 * @ModifyRemarks：
 * @version:V1.0
 *
 */
@EnableJpaRepositories
@Repository
public interface UserDao extends PagingAndSortingRepository<UserEntity, Long> {
	/**
	 * 
	 * 方法描述：根据用户名，邮箱，性别查询用户信息 注意事项：
	 * 
	 * @param username
	 * @param email
	 * @param sex
	 * @return
	 * @Exception 异常对象
	 */
	List<UserEntity> findByUsernameAndEmailAndSex(String username,
			String email, String sex);

	/**
	 * 
	 * 方法描述：根据用户名查询用户信息 注意事项：
	 * 
	 * @param username
	 * @param email
	 * @param sex
	 * @return
	 * @Exception 异常对象
	 */
	List<UserEntity> findByUsername(String username);

	/**
	 * 
	 * 方法描述：根据用户名查询用户信息 注意事项：
	 * 
	 * @param username
	 * @param email
	 * @param sex
	 * @return
	 * @Exception 异常对象
	 */
	List<UserEntity> findByUsernameAndEmail(String username, String email);

	/**
	 * 
	 * 方法描述：根据用户名查询用户信息 注意事项：
	 * 
	 * @param username
	 * @param email
	 * @param sex
	 * @return
	 * @Exception 异常对象
	 */
	List<UserEntity> findByEmail(String email);

	/**
	 * 
	 * 方法描述：根据用户名查询用户信息 注意事项：
	 * 
	 * @param username
	 * @param email
	 * @param sex
	 * @return
	 * @Exception 异常对象
	 */
	List<UserEntity> findByEmailAndSex(String email, String sex);

	/**
	 * 
	 * 方法描述：根据用户名查询用户信息 注意事项：
	 * 
	 * @param username
	 * @param email
	 * @param sex
	 * @return
	 * @Exception 异常对象
	 */
	List<UserEntity> findBySex(String sex);

	/**
	 * 
	 * 方法描述：根据用户名查询用户信息 注意事项：
	 * 
	 * @param username
	 * @param email
	 * @param sex
	 * @return
	 * @Exception 异常对象
	 */
	List<UserEntity> findByUsernameAndSex(String username, String sex);

	/**
	 * 
	 * 方法描述：自定义查询方法 注意事项：
	 * 
	 * @param truename
	 * @return
	 * @Exception 异常对象
	 */
	@Query(value = "select username from UserEntity where truename=?")
	List<String> findByTruename(String truename);
}
